home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / misc / dspice0s / slpmem.c < prev    next >
C/C++ Source or Header  |  1992-11-21  |  3KB  |  99 lines

  1. /* slpmem.f -- translated by f2c (version of 3 February 1990  3:36:42).
  2.    You must link the resulting object file with the libraries:
  3.     -lF77 -lI77 -lm -lc   (in that order)
  4. */
  5.  
  6. #include "f2c.h"
  7.  
  8. /* Common Block Declarations */
  9.  
  10. struct {
  11.     doublereal cpyknt;
  12.     integer istack[1], lorg, icore, maxcor, maxuse, memavl, ldval, numblk, 
  13.         loctab, ltab, ifwa, nwoff, ntab, maxmem, memerr, nwd4, nwd8, 
  14.         nwd16;
  15. } memmgr_;
  16.  
  17. #define memmgr_1 memmgr_
  18.  
  19. struct {
  20.     integer iprnta, iprntl, iprntm, iprntn, iprnto, limtim, limpts, lvlcod, 
  21.         lvltim, itl1, itl2, itl3, itl4, itl5, itl6, igoof, nogo, keof;
  22. } flags_;
  23.  
  24. #define flags_1 flags_
  25.  
  26. /*<       subroutine slpmem(ipntr,ksize) >*/
  27. /* Subroutine */ int slpmem_(ipntr, ksize)
  28. integer *ipntr, *ksize;
  29. {
  30.     static integer islp;
  31.     extern /* Subroutine */ int extmem_();
  32.     extern integer nxtevn_();
  33.  
  34.     /* Parameter adjustments */
  35.     --ipntr;
  36.  
  37.     /* Function Body */
  38. /*<       implicit double precision (a-h,o-z) >*/
  39.  
  40. /*      this routine may be used to define a certain amount of `slop
  41. ' to */
  42. /* be associated with a particular table managed by the memory manager. */
  43.  
  44. /* this *slop* is defined as a number of entries in the table for which */
  45.  
  46. /* space is to be held ***if possible*** during compaction of the managed 
  47. */
  48. /* area of memory.  this feature can eliminate the overhead incurred by */
  49.  
  50. /* alternatively extending more than one table at a time.  (for example, 
  51. */
  52. /* if the program contains a code sequence */
  53.  
  54. /*                  do 100 i=1,500 */
  55. /*                     ... */
  56. /*                  call extmem(table1,1) */
  57. /*                     ... */
  58. /*                  call extmem(table2,1) */
  59. /*                     ... */
  60. /*              100 continue */
  61.  
  62. /* then the overhead incurred by this memory manager can be reduced to */
  63. /* essentially nothing if prior to the above code sequence the program */
  64. /* executes */
  65.  
  66. /*                  call slpmem(table1,20) */
  67. /*                  call slpmem(table2,20) */
  68.  
  69. /* where `20
  70. ' is a typical number (for the above example, the memory-to- */
  71. /* memory copying overhead of the memory manager would be reduced by a */
  72. /* factor of 20). */
  73.  
  74. /* spice version 2g.6  sccsid=memmgr 3/15/83 */
  75. /*<       common /memmgr/ cpyknt,istack(1),lorg,icore,maxcor,maxuse,memavl, >*/
  76. /*<      1   ldval,numblk,loctab,ltab,ifwa,nwoff,ntab,maxmem,memerr,nwd4, >*/
  77. /*<      2   nwd8,nwd16 >*/
  78. /* spice version 2g.6  sccsid=flags 3/15/83 */
  79. /*<       common /flags/ iprnta,iprntl,iprntm,iprntn,iprnto,limtim,limpts, >*/
  80. /*<      1   lvlcod,lvltim,itl1,itl2,itl3,itl4,itl5,itl6,igoof,nogo,keof >*/
  81. /*<       dimension ipntr(1) >*/
  82. /*<       islp=nxtevn(ksize) >*/
  83.     islp = nxtevn_(ksize);
  84. /*<       call extmem(ipntr,islp) >*/
  85.     extmem_(&ipntr[1], &islp);
  86. /*<       islp=islp*istack(ltab+5) >*/
  87.     islp *= memmgr_1.istack[memmgr_1.ltab + 4];
  88. /*<       istack(ltab+3)=istack(ltab+3)-islp >*/
  89.     memmgr_1.istack[memmgr_1.ltab + 2] -= islp;
  90. /*<       memavl=memavl+istack(ltab+6) >*/
  91.     memmgr_1.memavl += memmgr_1.istack[memmgr_1.ltab + 5];
  92. /*<       istack(ltab+6)=islp >*/
  93.     memmgr_1.istack[memmgr_1.ltab + 5] = islp;
  94. /*<       return >*/
  95.     return 0;
  96. /*<       end >*/
  97. } /* slpmem_ */
  98.  
  99.